using System.Collections.Generic;
using SmartLink.Domain.Entity;
using SmartLink.Domain.ExpandEntity.Base;
using SmartLink.Domain.ExpandEntity;

namespace SmartLink.Domain.IServices
{
    public interface IBIZ_OrganizationDepartmentServices
    {
        void AddOrganizationDept(BIZ_OrganizationDepartment bIZ_OrganizationDepartment, int curUserId, int curUserOid);
        bool CheckExistByDeptName(int oid, string DeptName);
        bool DeleteOrganizationDept(int orgDeptId, out string msg);
        IList<BIZ_OrganizationDepartment> GetAllChildDepts(IList<int> deptIds);
        IList<BIZ_OrganizationDepartment> GetAllDeptByOrgId(int orgId);
        IList<BIZ_OrganizationDepartment> GetAllStoreByOrgId(int orgId);
        IList<int> FilterOID(int userId,int? OID=null);
        int? GetOID(int userId);
        IList<DepartmentExpand> GetOrganizationDeptList(int oid, string keyValue, Pagination pagination);
        BIZ_OrganizationDepartment GetSingleOrganizationDept(int orgDeptId);
        bool UpdateOrganizationDept(BIZ_OrganizationDepartment bIZ_OrganizationDepartment);

        IEnumerable<BIZ_OrganizationDepartment> GetDeptDescendants(int topOdid, bool withSelf = false);
    }
}